package com.example.tomatotodo.util;

import android.content.Context;
import android.util.Log;

import com.example.tomatotodo.model.TodoConstants;
import com.example.tomatotodo.model.TodoRecordSyncDTO;

import java.time.LocalDateTime;
import java.util.Random;
import java.util.concurrent.TimeUnit;

// 临时添加，生成测试数据，记得删除
public class GenerateTestDataUtil {
    private static final String TAG = "GenerateTestDataUtil";
    private static final Random random = new Random();
    private static final String[] TEST_TASK_TITLES = {
            "学习Java编程", "阅读技术文档", "锻炼身体", "学习Android开发",
            "整理笔记", "学习算法", "准备面试", "写项目文档"
    };

    /**
     * 生成最近30天内的10条随机专注记录并保存到SharedPreferences
     *
     * @param context 上下文
     */
    public static void generateAndSaveTestRecords(Context context) {
        Log.d(TAG, "开始生成测试数据");

        for (int i = 0; i < 10; i++) {
            // 创建记录对象
            TodoRecordSyncDTO record = new TodoRecordSyncDTO();

            // 生成最近30天内的随机开始时间
            LocalDateTime startTime = generateRandomStartTime();
            record.setClientCreatedAt(startTime);
            record.setStartTime(startTime);

            // 随机生成专注时长（5分钟到3小时）
            int focusDurationMinutes = random.nextInt(180) + 5; // 5到180分钟
            int focusSeconds = (int) TimeUnit.MINUTES.toSeconds(focusDurationMinutes);
            record.setActualFocusSeconds(focusSeconds);

            // 随机生成休息时长（0到30分钟）
            int restDurationMinutes = random.nextInt(30);
            int restSeconds = (int) TimeUnit.MINUTES.toSeconds(restDurationMinutes);
            record.setActualRestSeconds(restSeconds);

            // 设置结束时间
            LocalDateTime endTime = startTime.plusSeconds(focusSeconds + restSeconds);
            record.setEndTime(endTime);

            // 随机设置完成状态（90%概率完成）
            record.setFinished(random.nextInt(10) < 9);

            // 设置任务相关信息
            String taskTitle = TEST_TASK_TITLES[random.nextInt(TEST_TASK_TITLES.length)];
            record.setTaskTitle(taskTitle);
            record.setTaskType(random.nextBoolean() ? TodoConstants.TYPE_POMODORO : TodoConstants.TYPE_GOAL);
            record.setTaskId("task_" + (i + 1));

            // 保存记录到SharedPreferences
            RecordUtil.saveRecordToPreferences(context, record);

            Log.d(TAG, "生成第" + (i + 1) + "条记录: 开始时间=" + startTime + ", 专注秒数=" + focusSeconds +
                    ", 休息秒数=" + restSeconds + ", 完成=" + record.getFinished() +
                    ", 任务标题=" + record.getTaskTitle() + ", 任务类型=" + record.getTaskType());
        }

        Log.d(TAG, "测试数据生成完成");
    }

    /**
     * 生成最近30天内的随机开始时间
     *
     * @return 随机的LocalDateTime
     */
    private static LocalDateTime generateRandomStartTime() {
        // 获取当前时间
        LocalDateTime now = LocalDateTime.now();

        // 生成过去指定天内的随机天数
        int daysAgo = random.nextInt(400);

        // 生成随机小时(0-23)
        int hour = random.nextInt(24);

        // 生成随机分钟(0-59)
        int minute = random.nextInt(60);

        // 生成随机秒数(0-59)
        int second = random.nextInt(60);

        return now.minusDays(daysAgo)
                .withHour(hour)
                .withMinute(minute)
                .withSecond(second)
                .withNano(0);
    }
}
